aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)/invoice/[id]/[email protected]
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-09-25 12:50:46 -0700
committerAdam Soltys <[email protected]>2024-09-25 12:50:46 -0700
commit3be85cc511220725bfff7add3a6cb4927f73b15c (patch)
tree1768a9f0a25c2ee0a847d5ce0174ab3cfcf6ba77 /src/routes/(app)/invoice/[id]/[email protected]
parent396535514c4fe00e872e5cc5af0a504e923736bb (diff)
downloadcoinos-ui-3be85cc511220725bfff7add3a6cb4927f73b15c.tar.gz
coinos-ui-3be85cc511220725bfff7add3a6cb4927f73b15c.zip
invoice fixes
Diffstat (limited to 'src/routes/(app)/invoice/[id]/[email protected]')
-rw-r--r--src/routes/(app)/invoice/[id]/[email protected]115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/routes/(app)/invoice/[id]/[email protected] b/src/routes/(app)/invoice/[id]/[email protected]
new file mode 100644
index 00000000..db14b046
--- /dev/null
+++ b/src/routes/(app)/invoice/[id]/[email protected]
@@ -0,0 +1,115 @@
+<script>
+ import { SvelteToast } from "@zerodevx/svelte-toast";
+ import { onDestroy, onMount } from "svelte";
+ import { close, connect, send } from "$lib/socket";
+ import {
+ last,
+ invoice,
+ request,
+ ndef,
+ passwordPrompt,
+ password,
+ pin,
+ } from "$lib/store";
+ import { page } from "$app/stores";
+ import { browser } from "$app/environment";
+ import LoadingSplash from "$comp/LoadingSplash.svelte";
+ import AppHeader from "$comp/AppHeader.svelte";
+ import Invoice from "$comp/Invoice.svelte";
+ import Password from "$comp/Password.svelte";
+ import { getCookie, warning, protectedRoutes } from "$lib/utils";
+ import { t, locale, loading } from "$lib/translations";
+ import { goto, onNavigate } from "$app/navigation";
+
+ export let data;
+
+ let { generate, rate, user, subject, token, rates } = data;
+
+ $: update(data);
+ let update = (data) => {
+ ({ rate, user, subject, token, rates } = data);
+ };
+
+ onMount(async () => {
+ if (browser) {
+ checkSocket();
+ $pin = getCookie("pin");
+
+ if (window.NDEFReader && user.nfc) {
+ try {
+ $ndef = new NDEFReader();
+ await $ndef.scan();
+
+ $ndef.addEventListener("readingerror", (e) => {
+ console.log("nfc error", e);
+ });
+
+ $ndef.addEventListener("reading", ({ message, serialNumber }) => {
+ goto(`/send/${message}`);
+ });
+ } catch (error) {
+ console.log("Argh! " + error);
+ }
+ }
+ }
+ });
+
+ $: browser && connect(token);
+
+ let lost,
+ checkTimer,
+ expireTimer,
+ counter = 0;
+
+ let checkSocket = () => {
+ counter++;
+ lost = Date.now() - $last > 30000;
+ if (lost) connect(token);
+ if (counter > 5) {
+ send("heartbeat", token);
+ counter = 0;
+ }
+
+ checkTimer = setTimeout(checkSocket, 1000);
+ };
+
+ onDestroy(() => {
+ if (browser) {
+ close();
+ clearTimeout(checkTimer);
+ clearTimeout(expireTimer);
+ }
+ });
+</script>
+
+{#if browser && user && $passwordPrompt}
+ <Password {user} />
+{/if}
+
+<svelte:head>
+ {#if subject}
+ <title>coinos - {subject.username}</title>
+ <meta name="lightning" content={`lnurlp:${subject.username}@coinos.io`} />
+ {:else}
+ <title>coinos</title>
+ {/if}
+
+ {#if subject?.profile}
+ <meta name="og:image" content={`/api/public/${subject.profile}.webp`} />
+ {:else}
+ <meta property="og:image" content="/images/logo.webp" />
+ {/if}
+</svelte:head>
+
+<SvelteToast options={{ reversed: true, intro: { y: 192 } }} />
+
+<main class="pb-20">
+ <AppHeader {user} {subject} />
+ {#if !$loading}
+ <slot />
+ {/if}
+</main>
+
+{#if $invoice}
+ <Invoice {user} />
+{/if}